home *** CD-ROM | disk | FTP | other *** search
- ;*****************************************************************************
- ;*
- ;* Program Name: VAP_Setup_Module
- ;*
- ;* Filename: vsetup.asm
- ;*
- ;* Version: 1.0
- ;*
- ;* Programmers: Bryan Sparks
- ;*
- ;* Comments: This is the startup and setup code for VAPs.
- ;*
- ;*****************************************************************************
- name VAPSetUpAndStartModule
-
- DGROUP GROUP _DATA
-
- PGROUP GROUP _TEXT
- assume cs:PGROUP
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;; TEXT definitions
- ;; Define header, ESR routines, Handler routines,
- ;; and ProcessStart procedures
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- _TEXT segment public 'CODE'
- ;VAP definitions
- public NetWareShellServices, ProcessControlServices
- public ConsoleControlServices, IPXSPXServices
-
- ;IPX/SPX Definitions
- public _ReceiveESRHandler, _SendESRHandler
-
- ;SAP Definitions
- public _SAPWaitESRHandler, _SAPAdvertiseESRHandler
-
- ;Handler front-ends
- extrn _ConsoleHandler: near, _DownHandler: near
-
- ;IPX/SPX ESR Externals
- ;;;; extrn _ReceiveESR: near, _SendESR: near
- extrn _SAPWaitESR: near, _SAPAdvertiseESR: near
-
-
- ;VAP Header
- Signature db 'NWProc'
- NetWareShellServices dd ?
- ProcessControlServices dd ?
- ConsoleControlServices dd ?
- IPXSPXServices dd ?
- VAPConsoleHandler dd ConsoleHandlerCALL
- VAPDownHandler dd DownHandlerCALL
- VAPConsoleOrDownDataSegment dw DGroup
- VAPConnectionRequestFlag dw 1 ;No connection
- VAPNameString db 'Name String', 64-($-VAPNameString) dup(0)
- VAPConsoleKeyWordCount dw 2
- VAPKeyword1 db 'FIRST', 16-($-VAPKeyword1) dup(0)
- VAPKeyword2 db 'SECOND', 16-($-VAPKeyword2) dup(0)
- VAPSignOnMessage db 'Sign-on message.', 0
- db 500-($-VAPSignOnMessage) dup(0)
-
-
- VAPStart proc near
- mov ax, DGroup
- mov di, 1 ;change segment to data (read/write)
- call dword ptr cs:ProcessControlServices
- cli
- mov ax, DGroup
- mov ds, ax
- mov es, ax
- mov ss, ax
- mov ax, OFFSET DGroup:MainStackEnd
- mov sp, ax
- sti
- call _MAIN
- VAPStart endp
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;; Spawned Process front-ends
- ;; These set the process up by assigning the segment registers
- ;; and assigning a stack to the process.
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;; The following lines will change as YOUR VAP dictates.
- ;; You will need to have you own names, etc.
- ;;
- ;; Note that you will also need to change the KEYWORDs and the
- ;; Stack names at the bottom of this file.
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;Process definitions
- public _FirstProcessStart
- public _SecondProcessStart
-
- extrn _Main: near
- extrn _FirstProcess: near
- extrn _SecondProcess: near
-
- _FirstProcessStart proc near
- cli
- mov ax, DGroup
- mov ds, ax
- mov es, ax
- mov ss, ax
- mov ax, OFFSET DGroup:FirstStackEnd
- mov sp, ax
- sti
- call _FirstProcess
- _FirstProcessStart endp
-
- _SecondProcessStart proc near
- cli
- mov ax, DGroup
- mov ds, ax
- mov es, ax
- mov ss, ax
- mov ax, OFFSET DGroup:SecondStackEnd
- mov sp, ax
- sti
- call _SecondProcess
- _SecondProcessStart endp
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;; Handler front-ends
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- assume ds: DGroup
-
- ConsoleHandlerCALL proc far
- mov _Keyword, ax
- call _ConsoleHandler
- ret
- ConsoleHandlerCALL endp
-
-
- DownHandlerCALL proc far
- call _DownHandler
- ret
- DownHandlerCALL endp
-
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;; Event Service Routine front-ends
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- _ReceiveESRHandler proc far
- mov ax, DGroup
- mov ds, ax
- push es
- push si
- ;;; call _ReceiveESR
- add sp, 4
- ret
- _ReceiveESRHandler endp
-
- _SendESRHandler proc far
- mov ax, DGroup
- mov ds, ax
- push es
- push si
- ;;; call _SendESR
- add sp, 4
- ret
- _SendESRHandler endp
-
- _SAPWaitESRHandler proc far
- mov ax, DGroup
- mov ds, ax
- push es
- push si
- call _SAPWaitESR
- add sp, 4
- ret
- _SAPWaitESRHandler endp
-
- _SAPAdvertiseESRHandler proc far
- mov ax, DGroup
- mov ds, ax
- push es
- push si
- call _SAPAdvertiseESR
- add sp, 4
- ret
- _SAPAdvertiseESRHandler endp
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;; Misc Procedures
- ;; MSC stack check fake-out
- ;; IPX Functions
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- public __CHKSTK
- public _IPXOpenSocket
- public _IPXCloseSocket
- public _IPXGetInternetworkAddress
- public _IPXSendPacket
- public _IPXListenForPacket
- public _IPXScheduleIPXEvent
- public _IPXCancelEvent
- public _IPXGetLocalTarget
- public _IPXRelinquishControl
- public _IntSwap
-
- __CHKSTK proc near
- pop cx ; get return offset
- sub sp,ax ; allocate stack space
- jmp cx ; return to cx
- __CHKSTK endp
-
- ;Parameters:
- ; On Entry: Pointer to socket to open
- ; Socket Longevity
- ; On Exit: Error codes in AX
- _IPXOpenSocket proc near
- push bp
- mov bp, sp
-
- mov bx, [bp+4]
- mov dx, [bx]
- mov ax, [bp+6]
-
- call dword ptr cs: IPXSPXServices
-
- pop bp
- ret
- _IPXOpenSocket endp
-
- ;Parameters:
- ; On Entry: Socket Number
- ; On Exit: nothing
- _IPXCloseSocket proc near
- push bp
- mov bp, sp
-
- mov dx, [bp+4]
-
- call dword ptr cs: IPXSPXServices
-
- pop bp
- ret
- _IPXCloseSocket endp
-
-
-
- ;Parameters:
- ; On Entry: 10 byte buffer
- ; On Exit: 10 byte buffer will contain address
- _IPXGetInternetworkAddress proc near
- push bp
- mov bp,sp
-
- mov ax, DGroup
- mov es, ax
- mov bx, [bp+4]
- mov si, bx
- mov bx, 09h
- call dword ptr cs: IPXSPXServices
- push ds
- pop es
-
- pop bp
- ret
- _IPXGetInternetworkAddress endp
-
-
- ;Parameters
- ; On Entry: Pointer to ECB
- _IPXSendPacket proc near
- push bp
- mov bp, sp
-
- mov ax, DGroup
- mov es, ax
- mov bx, [bp+4]
- mov si, bx
- mov bx, 03h
-
- call dword ptr cs: IPXSPXServices
-
- push ds
- pop es
-
- pop bp
- ret
- _IPXSendPacket endp
-
- ;Parameters
- ; On Entry: Pointer to ECB
- _IPXListenForPacket proc near
- push bp
- mov bp, sp
-
- mov ax, DGroup
- mov es, ax
- mov bx, [bp+4]
- mov si, bx
- mov bx, 04h
- call dword ptr cs: IPXSPXServices
- push ds
- pop es
-
- pop bp
- ret
- _IPXListenForPacket endp
-
- _IPXScheduleIPXEvent proc near
- push bp
- mov bp, sp
-
- mov ax, DGroup
- mov es, ax
- mov bx, [bp+6]
- mov si, bx
- mov ax, [bp+4]
- mov bx, 05h
-
- call dword ptr cs: IPXSPXServices
-
- push ds
- pop es
-
- pop bp
- ret
- _IPXScheduleIPXEvent endp
-
-
- ;Parameters
- ; On Entry: Pointer to ECB
- _IPXCancelEvent proc near
- push bp
- mov bp, sp
-
- mov ax, DGroup
- mov es, ax
- mov bx, [bp+4]
- mov si, bx
- mov bx, 06h
-
- call dword ptr cs: IPXSPXServices
-
- push ds
- pop es
-
- pop bp
- ret
- _IPXCancelEvent endp
-
- ;Parameters:
- ; On Entry: Pointer to 12 byte address
- ; Pointer to 6 byte empty buffer
- _IPXGetLocalTarget proc near
- push bp
- mov bp,sp
-
- mov ax, DGroup
- mov es, ax
- mov bx, [bp+4]
- mov si, bx
- mov bx, [bp+6]
- mov di, bx
- mov bx, 02h
-
- call dword ptr cs: IPXSPXServices
-
- push ds
- pop es
-
- pop bp
- ret
- _IPXGetLocalTarget endp
-
- ;Parameters:
- ; On Entry: nothing
- ; On Exit: nothing
- _IPXRelinquishControl proc near
- mov bx, 0Ah
- call dword ptr cs: IPXSPXServices
- ret
- _IPXRelinquishControl endp
-
-
- ;Parameters:
- ; On Entry: Parameter to swap
- ; On Exit: Returns swapped integer in AX
- _IntSwap proc near
- push bp
- mov bp, sp
- mov ax, [bp+4]
- xchg ah, al
- pop bp
- ret
- _IntSwap endp
-
- _TEXT ends
-
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;; Data definitions
- ;; Define all stacks for all processes and also define keyword variable
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- _DATA SEGMENT word public 'DATA'
- assume ds:DGROUP
-
- ;Stacks
- dw 2000 dup (0)
- MainStackEnd label word
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;; Here are the stacks appropiate for each process.
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- dw 2000 dup (0)
- FirstStackEnd label word
- dw 2000 dup (0)
- SecondStackEnd label word
-
-
- ;Keyword that will be used in C program
- public _Keyword
-
- _Keyword dw 0
-
-
- _DATA ENDS
-
- end VAPStart
-